#include "jsd/ffc_executable/ffc_executable_class.h"

#include "jsd/ffc_executable/ffc_executable_function.h"
#include "jsd/ffc_derived/ffc_derived_function.h"
#include "jsd/ffc_base/ffc_base_function.h"


#include <memory>
#include <iostream>


int main( int const /*argc*/, char const *const * /*argv*/ ) {
	{
		auto example = ::std::unique_ptr< ::jsd::tpc_executable::Ffc_executable_class >( new ::jsd::tpc_executable::Ffc_executable_class );

		::std::cout << example->say_header_hello() << ::std::endl;
		::std::cout << example->say_base_hello() << ::std::endl;
		::std::cout << example->say_derived_hello() << ::std::endl;
		::std::cout << example->say_executable_hello() << ::std::endl;
	}

	::std::cout << ::std::endl;

	::std::cout << jsd_ffc_base_function_say_executable_hello() << ::std::endl;
	::std::cout << jsd_ffc_derived_function_say_executable_hello() << ::std::endl;
	::std::cout << jsd_ffc_executable_function_say_executable_hello() << ::std::endl;

	::std::cout << ::std::endl;

	return 0;
}
